Legacy Lighting(传统照明)
材质和照明参数用于控制内置顶点照明。顶点光照是标准的Direct3D和OpenGL的光照模型,计算每一个顶点。照明打开它。照明是由材质块,材质和separatespecular命令的影响。
注意:当顶点程序使用时,材质/灯光命令没有影响;在这种情况下,所有计算都在着色器中完全描述。建议使用可编程着色器而不是传统的顶点照明。对于这些你不使用任何这里所描述的命令,而是定义自己的顶点和片段程序,完成所有的照明,纹理和任何其他的。
顶点着色和照明是任何渲染几何计算的第一个效果。它在顶点级别上运行,并计算在纹理应用之前使用的基色。
语法:
顶层命令控制是否使用固定功能的灯光,以及一些配置选项。主要设置在材料块,进一步详细如下。
1、Color
    Color color
将对象设置为固体颜色。颜色是四RGBA值在括号,或颜色属性的名称在方括号。
2、Material
    Material {
        Material Block
    }
材质块用于定义对象的材质属性。
3、Lighting
    Lighting On | Off
对于在材质块中定义的设置有任何影响,您必须启用灯光与灯光的命令。如果灯光是关闭的,颜色是直接从颜色命令。
4、SeparateSpecular
    SeparateSpecular On | Off
此命令使镜面照明添加到着色通道的末端,所以镜面照明不受纹理的影响。只有在使用照明时才有效果。
5、ColorMaterial
    ColorMaterial AmbientAndDiffuse | Emission
使用每个顶点颜色代替材质中设置的颜色。ambientanddiffuse取代环境和漫反射的材质的值;自发光取代颜色的自发光。
Material Block
这包含材质如何反应光的设置。任何这些属性都可以忽略,在这种情况下,它们默认为黑色(即没有影响)。
Diffuse color: 漫反射颜色分量。这是一个对象的基本颜色。
Ambient color: 环境颜色分量。这是对象的颜色,在照明窗口中被环境光照射。
Specular color: 对象的高光的颜色。
Shininess number: 突出的清晰度,在1和0之间。0你得到了一个巨大的亮点,看起来像漫反射照明,1的时候你得到一个小的斑点。
Emission color: 物体不被任何光线击中时的颜色。
灯光打到物体的全部颜色是: Ambient Lighting Window’s Ambient Intensity setting + (Light Color Diffuse + Light Color * Specular) + Emission 该方程的光部分(括号内)是所有的灯光打在对象重复。 通常你想继续扩散和环境颜色相同的(所有的Unity内置的着色器这样做)。
例如:
总是纯红色渲染对象:
    Shader "Solid Red" {
        SubShader {
            Pass { Color (1,0,0,0) }
        }
    }
基本的着色对象白色和应用顶点照明:
    Shader "VertexLit White" {
        SubShader {
            Pass {
                Material {
                    Diffuse (1,1,1,1)
                    Ambient (1,1,1,1)
                }
                Lighting On
            }
        }
    }
扩展版本,增加了在监视面板中的材质颜色属性:
    Shader "VertexLit Simple" {
        Properties {
            _Color ("Main Color", COLOR) = (1,1,1,1)
        }
        SubShader {
            Pass {
                Material {
                    Diffuse [_Color]
                    Ambient [_Color]
                }
                Lighting On
            }
        }
    }
最后,一个完整的顶点光照着色器(参见SetTexture参考页):
    Shader "VertexLit" {
        Properties {
            _Color ("Main Color", Color) = (1,1,1,0)
            _SpecColor ("Spec Color", Color) = (1,1,1,1)
            _Emission ("Emmisive Color", Color) = (0,0,0,0)
            _Shininess ("Shininess", Range (0.01, 1)) = 0.7
            _MainTex ("Base (RGB)", 2D) = "white" {}
        }
        SubShader {
            Pass {
                Material {
                    Diffuse [_Color]
                    Ambient [_Color]
                    Shininess [_Shininess]
                    Specular [_SpecColor]
                    Emission [_Emission]
                }
                Lighting On
                SeparateSpecular On
                SetTexture [_MainTex] {
                    Combine texture * primary DOUBLE, texture * primary
                }
            }
        }
    }
🔚